Skip to content

Support NeuroConv 0.9.3#1056

Merged
bendichter merged 30 commits intomainfrom
support-neuroconv-latest
Mar 4, 2026
Merged

Support NeuroConv 0.9.3#1056
bendichter merged 30 commits intomainfrom
support-neuroconv-latest

Conversation

@bendichter
Copy link
Collaborator

@bendichter bendichter commented Feb 13, 2026

Bumps neuroconv from 0.6.1 to 0.9.2 (latest) in a single PR.

Key Changes

Backend (manage_neuroconv.py)

  • ElectrodeColumns/UnitColumns sync: neuroconv 0.6.2+ populates default column definitions; frontend validator cross-references these → errors. Fixed by syncing columns metadata with all schema properties, including data_type inference.
  • temporally_align_data_interfaces: Added metadata=None, conversion_options=None kwargs (neuroconv 0.7.0 API change)
  • _ensure_dandi_staging_alias(): Registers dandi-staging as alias for dandi-sandbox in dandi >= 0.74.0
  • automatic_dandi_upload: staging=sandbox= parameter (neuroconv 0.9.0 API change)

Frontend

  • Table.js bug fix: value == "" was true for 0 due to JS type coercion; fixed to value === "" || value == null

Environment / CI

  • Bump neuroconv to 0.9.2 across all platform environments
  • Pin h5py < 3.13 on macOS arm64 (HDF5 symbol mismatch with pytables in PyInstaller builds)
  • Loosen ndx-pose (>= 0.1.1) and nwbinspector (>= 0.6.2) pins
  • Remove neo and pandas pins (no longer needed with neuroconv >= 0.8.0)
  • Remove deprecated macos-13 CI runners from all workflows

E2E Tests

  • Update SpikeGLX source data: file_pathfolder_path + stream_id (neuroconv 0.9.0 API change)

Supersedes #1043, #1049, #1053.

@bendichter bendichter force-pushed the support-neuroconv-latest branch 2 times, most recently from 0f981f5 to 7b4c587 Compare February 13, 2026 05:20
Key changes:
- Bump neuroconv from 0.6.1 to 0.9.1 across all environments
- Sync ElectrodeColumns/UnitColumns metadata with all schema properties (incl. data_type inference)
- Fix Table.js: value == '' was true for 0 (JS coercion bug)
- Add metadata/conversion_options kwargs to temporally_align_data_interfaces (0.7.0 API change)
- Add _ensure_dandi_staging_alias() for dandi >= 0.74.0 compat
- Update automatic_dandi_upload param: staging → sandbox (0.9.0 API change)
- Pin h5py < 3.13 on macOS arm64 (HDF5 symbol mismatch with pytables)
- Remove deprecated macos-13 CI runners from all workflows
- Update E2E tests: SpikeGLX now uses folder_path + stream_id (0.9.0 API change)
- Loosen ndx-pose (>= 0.1.1) and nwbinspector (>= 0.6.2) pins
- Remove neo and pandas pins (no longer needed with neuroconv >= 0.8.0)
@bendichter bendichter force-pushed the support-neuroconv-latest branch from ef5d1bc to b070be2 Compare February 13, 2026 05:21
pre-commit-ci bot and others added 2 commits February 13, 2026 05:21
- Update scikit-learn 1.4.0 → 1.6.1 (numpy 2.x compatibility)
- Pin tqdm_publisher, tzlocal, ndx-pose, nwbinspector, numcodecs to specific versions
- Remove stale scipy < 1.12.0 constraint on MAC-intel
- Remove _ensure_dandi_staging_alias (no longer needed with neuroconv 0.9.1)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bendichter bendichter enabled auto-merge February 13, 2026 17:38
@bendichter
Copy link
Collaborator Author

The ExampleDataTests failures on Windows and macOS are caused by a regression in neuroconv's validate_conversion_options (introduced in catalystneuro/neuroconv#1139). It JSON-encodes conversion_options before schema validation, which fails on the progress_bar_class type object and callback functions that GUIDE passes in iterator_opts.

Fix PR: catalystneuro/neuroconv#1667

@bendichter
Copy link
Collaborator Author

As far as I can tell, catalystneuro/neuroconv#1667 was the only blocking issue. When that is released in NeuroConv 0.9.3, these tests should pass

@bendichter
Copy link
Collaborator Author

fyi @h-mayorquin

@bendichter bendichter changed the title Support NeuroConv 0.9.1 Support NeuroConv 0.9.2 Feb 19, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bendichter bendichter changed the title Support NeuroConv 0.9.2 Support NeuroConv 0.9.3 Feb 20, 2026
bendichter and others added 5 commits February 20, 2026 11:47
The coerce_schema_compliance_recursive function used elif between
patternProperties and properties checks, so schemas with both
(like Ophys with Fluorescence/DfOverF pattern props alongside
ImagingPlane regular props) would skip regular property coercion.
This caused emission_lambda to remain as a string/None instead of
being converted to float, breaking BrukerTiff conversions.

Also fix resolve_references to recursively resolve nested $refs and
handle patternProperties, and add str-to-float coercion as a safety
net for number fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
BrukerTiffSinglePlaneConverter inherits from BaseDataInterface (not
NWBConverter) and doesn't override get_metadata_schema(), so the
converter's schema lacks Ophys properties. This caused the schema-based
NaN coercion in replace_none_with_nan to miss emission_lambda, leaving
it as the string "NaN" instead of float NaN.

Add replace_nan_strings() as a schema-independent fallback that converts
all string "NaN" values (JavaScript NaN artifacts) to float NaN.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
bendichter and others added 6 commits February 20, 2026 14:49
Rename VideoInterface to ExternalVideoInterface, remove duplicate
AlphaOmegaRecordingInterface, add WhiteMatterRecordingInterface schema,
and regenerate all interface schemas with latest neuroconv.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-recording-interface

Add WhiteMatterRecordingInterface
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ording-interface

Add Plexon2RecordingInterface
bendichter and others added 4 commits February 20, 2026 18:50
Regenerate schemas to preserve pydantic's DirectoryPath and FilePath
format types instead of resolving them all to generic "path".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
These files are generated by `python generateInterfaceSchema.py` and
don't need to be tracked. This eliminates noisy diffs across 40+ JSON
files on every neuroconv version bump.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…at-types

Restore file-path and directory-path format types in schemas
@bendichter
Copy link
Collaborator Author

@rly 's comment from review: add back intel support, with runners, which look something like "macos15-intel"

@rly
Copy link
Collaborator

rly commented Mar 3, 2026

The WhiteMatter Recording interface shows this error on the source data input page:
image

@bendichter Can you resolve this? I don't have test data and cannot find any in ephy_testing_data. If it can't be resolved, I suggest not adding it in this PR.

The Plexon2 interface works only on Windows. We should limit its availability in this PR or a separate one.

The tutorial will need to be updated because the new SpikeGLX interface requires a stream name (both single session and multi-session tutorials) but that can be a separate PR.

Otherwise looks good to me. Thanks @bendichter !

bendichter and others added 5 commits March 3, 2026 18:37
The trailing comma after CellExplorerRecordingInterface caused JSON
parse failures, breaking all DevTests, LiveServices, ExampleDataTests,
and E2ELiveServices CI jobs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The ephys-datasets-macos-15-intel cache has never been saved due to
repeated race conditions between concurrent PR workflow runs. This
empty commit triggers a clean run to populate the cache.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deleted ~5GB of stale/duplicate caches to make room for the
macos-15-intel ephys cache that has never been successfully saved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The ephys-datasets-macos-15-intel cache reservation got permanently
stuck from a race condition between concurrent workflow runs. Bumping
the key prefix forces a fresh cache entry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@rly
Copy link
Collaborator

rly commented Mar 4, 2026

Thanks @bendichter !

@bendichter bendichter merged commit b3fba6d into main Mar 4, 2026
24 checks passed
@bendichter bendichter deleted the support-neuroconv-latest branch March 4, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants